
12.02.2013, 23:33
|
Аспирант
|
|
Регистрация: 13.03.2011
Сообщений: 57
|
|
Пропадает элемент объекта, хотя он есть...
var http = false;
var url1 = '/assets/components/ajax/connector.php?action=func'; // Возвращает: "test"
var glob = {};
if(navigator.appName == "Microsoft Internet Explorer") {
http = new ActiveXObject("Microsoft.XMLHTTP");
}else{
http = new XMLHttpRequest();
}
function getData(url){
http.open("GET", url, true);
http.onreadystatechange=function(){
if(http.readyState == 4){
glob.ret1 = http.responseText;
}
}
http.send(null);
}
getData(url1);
console.log(glob); // [ret1 "test"] ТАК ЕСТЬ!
console.log(glob.ret1); // [undefined] А ТАК НЕТУ... :-((((((
Подскажите, почему так? Заранее спасибо!
|
|

12.02.2013, 23:36
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
Petja,
Не инициализирован glob - как объект
Где то в теле должно быть
var glob = {}
Последний раз редактировалось Deff, 12.02.2013 в 23:42.
|
|

12.02.2013, 23:38
|
Аспирант
|
|
Регистрация: 13.03.2011
Сообщений: 57
|
|
Сообщение от Deff
|
Petja,
Не инициализирован glob - как объект
Где то в теле должно быть
var glob = {}
|
Так он же объявлен вверху? В теле чего?
А почему тогда первый консоль лог его выдает?
Спасибо.
|
|

13.02.2013, 00:20
|
х.з
|
|
Регистрация: 21.11.2010
Сообщений: 4,588
|
|
Сообщение от Petja
|
Так он же объявлен вверху? В теле чего?
А почему тогда первый консоль лог его выдает?
Спасибо.
|
запрос асинхронный.всё верно. выполнение кода не блокируется на время запроса
if(http.readyState == 4)
{
glob.ret1 = http.responseText;
alert(glob.ret1);
}
Deff, всё как обычно-прежде чем "помочь" кому то , задумайся- сколько вреда твоя "помощь" приносит. И изучи, наконец, основы минимальные.
Последний раз редактировалось dmitriymar, 13.02.2013 в 00:25.
|
|

13.02.2013, 00:37
|
Аспирант
|
|
Регистрация: 13.03.2011
Сообщений: 57
|
|
Сообщение от dmitriymar
|
запрос асинхронный.всё верно. выполнение кода не блокируется на время запроса
if(http.readyState == 4)
{
glob.ret1 = http.responseText;
alert(glob.ret1);
}
|
Спасибо!
Вы не могли бы мне помочь понять, это непонимание асинхронного уже не в первый раз бьет по рукам.
Как так, что в конце кода, рядом стоят:
console.log(glob); // [ret1 "test"] ТАК ЕСТЬ!
console.log(glob.ret1); // [undefined] А ТАК НЕТУ... :-((((((
И в первом там есть ret1 со значением "test", а во втором, более конкретном - уже нету?
Что значит асинхронный? Это когда он выполняется, то переменная ведь назначается, после выполнения куда она девается, ведь понятно что запрос уже точно выполнен и данные уже точно получены?
Не подскажете, как мне лучше получить подряд с 2-х урлов, текстовые данные, для дальнейшей их конкатинации?
|
|

13.02.2013, 00:56
|
х.з
|
|
Регистрация: 21.11.2010
Сообщений: 4,588
|
|
Сообщение от Petja
|
И в первом там есть ret1 со значением "test", а во втором, более конкретном - уже нету?
|
его ещё нет.
http://javascript.ru/ajax/intro
|
|

13.02.2013, 02:29
|
х.з
|
|
Регистрация: 21.11.2010
Сообщений: 4,588
|
|
Ну чтож думаю нужно расшифровывать , в свете твоего минуса.
Многоуважаемый Deff, если бы вы обратили внимание, что летом, после вашей активной компании по сбору плюсиков, с форума ушли практически все знающие язык. И вернулись, в течении пары месяцев, после вашего ухода.
Сейчас наблюдается, такая же картина после вашего прихода-ушли почти все. Это видно, если просмотреть форум. Параллели не просматриваете? Зря. При этом ,с вашим приходом, на форуме стали задаваться массово вопросы сколько будет 2+2 , на какие ранее т.с самостоятельно находили ответы, среди сотен подобных на форуме.
Качество ваших же ответов, оставляет желать лучшего, что в прочем и не удивительно, при ваших заявлениях что язык изучается за пол года.
Закономерный вопрос -почему тогда в серьёзные конторы зачастую стоит требование от 2-3 лет?
О вашем же увлечении фреймами , я вобще молчу. вы так и не удосужились воспользоваться поиском , и увидеть что ваши советы и изыскания, ведут прислушавшихся под бан и фильтры поисковых систем. Впрочем как и большинство ваших советов, возможно не сразу, но приведут прислушавшихся к печальному результату.
От того что вы посчитали себя спецом , вы им не станете.
А по поводу , вреда от немо , меня, кому вы там объявили ещё джихад?
Вред всех до кучи , не превысит тот вред какой творите вы. Своей глупостью, тупостью, самовлюбленностью и т.д
Последний раз редактировалось dmitriymar, 13.02.2013 в 02:32.
|
|

13.02.2013, 13:11
|
Аспирант
|
|
Регистрация: 13.03.2011
Сообщений: 57
|
|
Прочитал все по ссылке. Но все равно не понятно, как так,
идут 2 подряд строки:
console.log(glob);
и сразу за ней:
console.log(glob.ret1);
В первой хранится значение, во второй нет...
Если во втором случае значения еще нет, то и в первом его не должно быть.
И как его еще нет, если объект glob глобальный и значение ему уже точно присвоено, т.к. перед дампом объекта и элемента объекта идет:
getData(url1);
???
|
|

13.02.2013, 13:17
|
Аспирант
|
|
Регистрация: 13.03.2011
Сообщений: 57
|
|
Сообщение от Petja
|
И как его еще нет, если объект glob глобальный и значение ему уже точно присвоено, т.к. перед дампом объекта и элемента объекта идет:
getData(url1);
|
Эта часть вопроса отменяется, т.к. вызов функции ajax пошел и сразу за ним идет дальше код, хотя функция выполняется уже сама по себе.
Это я понял, но все таки - как так в первом случае console.log есть значение, а во втором нету???
|
|

13.02.2013, 13:28
|
 |
Студент
|
|
Регистрация: 30.04.2012
Сообщений: 1,113
|
|
Сообщение от Petja
|
как так в первом случае console.log есть значение, а во втором нету???
|
А какое она дает значение?
Вы же объявили наверху
var glob = {};
вот
console.log(glob);
и дает значение пустого объекта
|
|
|
|